#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;

class myStr
{
private:
    char *data;
    int length = 0;
    int *next;
    int *nextVal;

public:
    myStr(const char *);
    myStr(){};
    ~myStr();
    // 其他可以考虑的构造函数
    // myStr(const int&);
    // myStr(const myStr&);
    void print();
    void kmp_next();
    void kmp_nextVal();
    void printNext();
    void printNextVal();

    friend bool replaceStr(myStr &, const int &, const myStr &, const myStr &);
    friend int kmpMatch(const myStr &, const myStr &);
    friend int simpleMatch(const myStr &, const myStr &);
};
struct matrixNode
{
    int row;
    int col;
    int value;
};
class myMatrix
{
private:
    matrixNode* nodeList;
    int rowNum;
    int colNum;
    int nodeNum;

public:
    myMatrix(const int&, const int&, const int&, const int*);
    ~myMatrix();
    //建议加入的构造函数
    myMatrix();
    myMatrix(const myMatrix&);

    void printMatrix();
    void FastTransposeSMatrix(myMatrix&);
    void copy(myMatrix&);
    void setrow(const int );
    void setcol(const int );
    void setnode(const int );
    void input(const int,const int,const int,const int );
};